//
// Created by sgyt on 2020/2/1.
// 获取unix中软件和硬件的限制数量
#include <stdlib.h>
#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>

#define doit(name) pr_limit(#name,name);

static void pr_limit(char *name,int resourse)
{
    struct rlimit rlim;
    unsigned long long lim;
    if(getrlimit(resourse,&rlim) < 0)
    {
        perror("getrlimit is error\n");
        exit(0);
    }

    printf("%s ",name);

    if(rlim.rlim_cur == RLIM_INFINITY)
    {
        printf("(infinity) ");
    }else{
        lim = rlim.rlim_cur;
        printf("%10lld ",lim);
    }

    if(rlim.rlim_max == RLIM_INFINITY)
    {
        printf("(infinity) ");
    }else{
        lim = rlim.rlim_max;
        printf("%10lld ",lim);
    }

    printf("\n");

}

int main(int argc,char* argv[])
{
#ifdef  RLIMIT_AS
    doit(RLIMIT_AS);
#endif
    doit(RLIMIT_CORE);
    doit(RLIMIT_CPU);
    doit(RLIMIT_DATA);
    doit(RLIMIT_FSIZE);

#ifdef RLIMIT_MEMLOCK
    doit(RLIMIT_MEMLOCK);
#endif

#ifdef RLIMIT_MSGQUEUE
    doit(RLIMIT_MSGQUEUE);
#endif

#ifdef RLIMIT_NICE
    doit(RLIMIT_NICE);
#endif
    doit(RLIMIT_NOFILE);

#ifdef RLIMIT_NPROC
    doit(RLIMIT_NPROC);
#endif

#ifdef RLIMIT_RSS
    doit(RLIMIT_RSS);
#endif

    return 0;
}




